package com.example.zhuyu.basemvp.base;

import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;

import com.example.zhuyu.basemvp.di.component.AppComponent;

/**
 * @author zhuyu
 * @date 2019/2/17
 * 接口定义了类的一些共同的方法
 */
public interface IActivity {


    /**
     * 初始化layout布局
     *
     * @param savedInstanceState
     * @return 当返回值不为0时 调用 setContentView方法 并 初始化ButterKnife
     */
    @LayoutRes
    int initLayout(@Nullable Bundle savedInstanceState);

    /**
     * 初始化数据
     *
     * @param savedInstanceState
     */
    void init(@Nullable Bundle savedInstanceState);

    /**
     * 默认在onCreate中调用,请求网络数据.如当前页面无需网络请求,可不实现此方法,
     */
    void onRequest();

    /**
     * 注入Dagger 需要在onCreate中执行 ,在绑定layout之后 在onRequest之前调用,
     * 否则调用Presenter会引发NullPointException
     */
    void setDaggerComponent(AppComponent appComponent);
}
